//
//  SHHomeDataViewModel.swift
//  SHWeibo
//
//  Created by jingming wang on 16/7/28.
//  Copyright © 2016年 cpy.name. All rights reserved.
//

import UIKit

class SHHomeDataViewModel: NSObject {
    
    // ViewModel数组
    lazy var dataArray: [SHUserInfoViewModel] = [SHUserInfoViewModel]()
    
    func loadHomeData(isPullUp: Bool, succeed:(isSucc: Bool, count: Int)->()) {
        /*
        - 如果是上啦记载更多  需要给服务器maxid   sinceid == 0
        - 如果是下拉刷新  需要给服务器sinceId   maxId == 0
        - 如果sinceid == 0  maxid == 0  默认服务器返回最新的20条数据
        */
        
        var maxId:Int64 = 0
        var sinceId: Int64 = 0
        // 上啦加载更多
        if isPullUp {
            maxId = dataArray.last?.data?.id ?? 0
            // 因为服务器返回来重复数据 需要程序员自己处理
            if maxId > 0 {
                maxId -= 1
            }
        }else {
            // 下拉刷新
            sinceId = dataArray.first?.data?.id ?? 0
        }
        
        SHNetworkTools.sharedTools.homeLoadData(sinceId, maxId: maxId, success: { (response) -> () in
            // 判断他是否为nil 而且是否可以转成数组
            
            guard let _response = response?["statuses"] as?[[String: AnyObject]] else {
                succeed(isSucc: false, count: 0)
                return
            }
            var tempArray: [SHUserInfoViewModel] = [SHUserInfoViewModel]()
            
            for dict in _response {
                // 实例化数据模型
                let data: SHHomeData = SHHomeData(dict: dict)
                // 实例化viewModel
                let userInfoViewModel: SHUserInfoViewModel = SHUserInfoViewModel(data: data)
                tempArray.append(userInfoViewModel)
            }
            
            // 上拉加载更多
            if isPullUp {
                // 没有更多可加载数据
                if tempArray.count == 0 {
                    succeed(isSucc: true, count: -2)
                    return
                }
                // 有可加载数据
                self.dataArray += tempArray
                succeed(isSucc: true, count: -1)
            }else {
                // 下拉刷新
                self.dataArray = tempArray + self.dataArray
                succeed(isSucc: true, count: tempArray.count)
            }
            
            }) { (error) -> () in
                print("请求失败\(error)")
                succeed(isSucc: false, count: 0)
        }
    }
}
